﻿using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime;
using System.Text;

namespace IAOI.Platform.Common.Diagnostics
{
    public static class EventLog
    {
        //
        // 요약:
        //     특정 등록 이벤트 소스를 사용하여 지정된 메시지 텍스트로 오류, 경고, 정보, 성공 감사 또는 실패 감사 항목을 이벤트 로그에 씁니다.
        //
        // 매개 변수:
        //   source:
        //     지정한 컴퓨터에 등록되는 응용 프로그램의 소스입니다.
        //
        //   message:
        //     이벤트 로그에 쓸 문자열입니다.
        //
        //   type:
        //     System.Diagnostics.EventLogEntryType 값 중 하나입니다.
        [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
        public static void WriteEntry( EventLogSource source, string message, EventLogEntryType type)
        {
            string eventsource = null;
            if (source == EventLogSource.Platform)
            {
                eventsource = IAOI.Platform.Common.Configuration.ConfigurationManager.Settings.EventLog.PlatformSourceName;
            }
            else if (source == EventLogSource.Business)
            {
                eventsource = IAOI.Platform.Common.Configuration.ConfigurationManager.Settings.EventLog.BusinessSourceName;
            }
            else
            {
                eventsource = IAOI.Platform.Common.Configuration.ConfigurationManager.Settings.EventLog.DefaultSourceName;            
            }

            System.Diagnostics.EventLog.WriteEntry(eventsource, message, EventLogEntryType.Error);
        }
    }
}
